<?php

    function debugWords($words, $array = array()){
        static $style = "<style>.temp{margin-right: 20px; width:220px; overflow:auto; float:left;}</style>";
        echo $style;
        $style = "";
        
        foreach($words as $w){
            echo "<div class='temp'>$w</div>";
        }
        if(!empty ($array)){
            echo "<br/>";  
            print_r($arr); 
            echo "<br/>";   
        }
        echo "<br/>";
    }
    
    function debugarray($arr, $concat = "", &$last = false, $print = true){
        $out = "";
        if(!is_array($arr)) {$out .= "($arr)"; $last = true; return $out;}
        $concat .= "&nbsp&nbsp&nbsp";
        foreach($arr as $name => $a){
            $out .= "<br/><br/>$concat$name";
            $out .= debugarray($a, $concat, $last, false);
            if(!$last) $out .= "<br/>";
            $last = false;
        }
        if($print) echo $out;
        return $out;
    }
    
    //if(!defined('DIR_BASIC')){exit('No direct file access allowed!');}

    function tempoExecucao($start = null) {
        // Calcula o microtime atual
        $mtime = microtime(); // Pega o microtime
        $mtime = explode(' ',$mtime); // Quebra o microtime
        $mtime = $mtime[1] + $mtime[0]; // Soma as partes montando um valor inteiro

        if ($start == null) {
            // Se o parametro não for especificado, retorna o mtime atual
            return $mtime;
        } else {
            // Se o parametro for especificado, retorna o tempo de execução
            return round($mtime - $start, 2);
        }
    }
    
    function DefConstant($constant, $valor){
        if (!defined($constant)) 
            define($constant, $valor);
    }

    function Redirect($page, $time = 0, $args = "", $dados = array()){
        if(!is_numeric($time)) $time = 0;
        $after = "";
        if($args == "") $after = (is_admin)?"admin/":"";
        else $args = "&$args";
        
        if($page == "") SRedirect(URL, $time); //return;
        $amigavel  = (is_amigavel)?($args == "")?"":"index.php?url=":"index.php?url=";
        $url       = URL.$after.$amigavel.$page.$args;
        
        SRedirect($url, $time, $dados);
    }

    //redirecionamento simples
    function SRedirect($url, $time = 0, $dados = array()){
        if(defined('AJAX_ENABLED') && AJAX_ENABLED == true){
            echo json_encode($dados);
        }
        elseif(isset($_REQUEST['ajax'])) {
            $dados['redirect'] = $url;
            echo json_encode($dados);
        }else{
            echo "<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
                  <meta http-equiv='refresh' content='$time;URL=$url' />";
        }
        die();
    }
    
    function strtolowerbr($texto){ 
        //Letras minúsculas com acentos 
        $texto = strtr($texto, " 
        ĄĆĘŁŃÓŚŹŻABCDEFGHIJKLMNOPRSTUWYZQ 
        XVЁЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ 
        ÂÀÁÄÃÊÈÉËÎÍÌÏÔÕÒÓÖÛÙÚÜÇ 
        ", " 
        ąćęłńóśźżabcdefghijklmnoprstuwyzq 
        xvёйцукенгшщзхъфывапролджэячсмитьбю 
        âàáäãêèéëîíìïôõòóöûùúüç 
        "); 
        return strtolower($texto); 
    } 

    function GetPlainName($nome, $lower = true, $remover_acentos = true)
    {
        $nome = trim($nome);
        
        if($remover_acentos){
            //retira os acentos do nome
            $array1 = array( "á", "à", "â", "ã", "ä", "é", "è", "ê", "ë", "í", "ì", "î", "ï", "ó", "ò", "ô", "õ", "ö", "ú", "ù", "û", "ü", "ç"
            , "Á", "À", "Â", "Ã", "Ä", "É", "È", "Ê", "Ë", "Í", "Ì", "Î", "Ï", "Ó", "Ò", "Ô", "Õ", "Ö", "Ú", "Ù", "Û", "Ü", "Ç", "  "," ");
            $array2 = array( "a", "a", "a", "a", "a", "e", "e", "e", "e", "i", "i", "i", "i", "o", "o", "o", "o", "o", "u", "u", "u", "u", "c"
            , "A", "A", "A", "A", "A", "E", "E", "E", "E", "I", "I", "I", "I", "O", "O", "O", "O", "O", "U", "U", "U", "U", "C", " ","-");
            $nome = str_replace( $array1, $array2, $nome);
            if($lower) $nome = strtolower($nome);
        }elseif($lower) $nome = mb_strtolower($nome, CHARSET);
        
        $nome = str_replace(array("--", "?", "!", ".", ";", ",", "<", ">", "^", "]", "}", "º", "ª", "[", "{", "`", "´", '"', "'",
        "#","$", "%", "¨", "&", "*", "(", ")", "__", "+", "/", "\\", "|", "º", ":", "\n", "\t"
        ), "", $nome);
        $nome = trim($nome);
        return $nome;
    }

    function convertData($data){
        $data_nova = implode(preg_match("~\/~", $data) == 0 ? "/" : "-", array_reverse(explode(preg_match("~\/~", $data) == 0 ? "-" : "/", $data)));
        return $data_nova;
    }
    
    /**
     *  @autor: Carlos Reche
     *  @data:  Jan 21, 2005
     */
    
    function Resume($string, $max_lenght = 120){
        
        //garante um tamanho mínimo para a string
        if($max_lenght <= 0) $max_lenght = 120;
        
        //remove espaços extras, e tags html
        $string = str_replace(array("  ", "   ", "\n"), " ", trim(strip_tags($string)));
        
        //verifica se string é maior que o tamanho definido
        if (strlen($string) > $max_lenght) {  
           
           $i = 0;
           //enquanto não encontrar um espaço em branco
           while (substr($string,$max_lenght,1) <> ' ' && ($max_lenght < strlen($string))){
                $i++; $max_lenght++;
                
                //se em 20 caracteres ainda não encontrou espaco em branco então retorna a string cortada mesmo..
                if($i == 20){
                    $max_lenght -= 20;
                    break;
                }
           };
        };
        
        if($max_lenght < 0) $max_lenght = 120;
        return substr($string,0,$max_lenght);  
    }
    
    function array_unshift_assoc(&$arr, $key, $val){
       $arr = array_reverse($arr, true); 
       $arr[$key] = $val; 
       $arr = array_reverse($arr, true); 
       return $arr;
    }
    
    function genKey($num){
        $str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890';
        $key = '';
        $max = strlen($str) - 1;
        for($i=0;$i<$num;$i++)
            $key .= substr($str,rand(0, $max),1);
        return $key;
    }
    
    /*
     * Verifica se os dados enviados estão sendo feitos pelo próprio site. 
     */
    function requestFromThisSite(){
        
        //se não tem um referer o usuário está no próprio site
        if(!isset($_SERVER['HTTP_REFERER'])) return true;
        
        
        //se o envio dos dados não partiu diretamente deste site, retorna false
        if(strpos($_SERVER['HTTP_REFERER'], URL) === false) return false;
        

        return true;
    }

?>